package unit02;

import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors;

/**
 * @author wangzhuangzhuang
 * @DESC: Iterable接口定义的forEach方法： 【default void forEach(Consumer<? super T> action】
 * @date 2022-05-08 21:41
 */
public class ConsumerDemo {

	public static void main(String[] args) {
//		// 所有线性集合通过对集合中每个元素执行给定的操作来实现Iterable接口
//		List<String> strings = new ArrayList<>(Arrays.asList("this", "is", "a", "list", "of", "strings"));
//
//		// No.1: 通过匿名内部类实现
//		System.out.println("======================匿名内部类实现==============================");
//		strings.forEach(new Consumer<String>() {
//			@Override
//			public void accept(String s) {
//				System.out.println(s);
//			}
//		});
//		System.out.println("======================Lambda表达式实现==============================");
//		// No.2: 通过Lambda表达式来实现
//		strings.forEach(s -> System.out.println(s));
//
//		System.out.println("======================方法引用实现==============================");
//		// No.3: 通过方法引用来实现
//		strings.forEach(System.out::println);

		testInterfaceAboutConsumer();
	}

	public static void testInterfaceAboutConsumer() {
		List<String> fruits = new ArrayList<>(Arrays.asList("banana", "apple", "watermelon", "blueprint"));
		Optional.of(fruits).ifPresent(x -> System.out.println(x));
		int size = Optional.of(fruits)
				.orElse(Collections.emptyList()).size();
		System.out.println(size);
	}

}